package exercise;

public class EX04_OOP {

	//자릿수 구분 문자_
	//정수 리터럴이 너무 길면 가독성에 문제 있음
	//JDK7에 새롭게 추가도니 기능 중 하나는
	//3 자릿수마다 _ 를 사용할 수 있게 한 것
	
	//클래스에 사용되는 변수의 종류
	//멤버member 변수
	//   ->class 블록내 선언한 변수
	//   -> 해당 클래스를 통해서만 사용가능한 변수
	//인스턴스instance/object 변수
	//   -> 객채를 가리키는변수를 의미
	//   -> 클래스와 new 연산자를 사용한 문장을
	//      실행했을때의 결과물 
	
	// 생성자 
		// 생성자는 객체를 생성하는데 사용하는 특별한 메서드
		// 모든 클래스는 하나 이상의 생성자가 있어야함
		// 설령, 메서드를 작성하지 않았더라도 컴파일러가 
		// 자동으로 만들어서 넣어줌
		// 생성자는 일반 메서드와는 달리 void 나 return을 사용하지않음
		// 생성자 이름은 클래스 이름과 동일해야함
	
	public static void main(String[] args) {
		  // #1
		  Retangle r = new Retangle(); 
		  r.width = 4;
		  r.height = 40;
		  r.color = "red";
		  
		 //Retangle rOrange = new Retangle();
		 //rOrange.width = 3.5;
		 //rOrange.heigt = 35.9;
		 //rOrange.color = "orange";
		  
		 //System.out.println( r.width );
		 //System.out.println( r.height );
		 //System.out.println( r.color );
		  
		  
		  // #2
		  Fan f1 = new Fan();
		  f1.speed = f1.FAST;   //최고속도
		  f1.on = true;         //동작중
		  f1.radius = 10;
		  f1.color = "yellow";
		  
		  Fan f2 = new Fan();
		  f2.speed=f2.MEDIUM;
		  f2.on = false;
		  f2.radius =5;
		  
		  System.out.println( f2 );
		  System.out.println( f2.color );

		  //#3
		  Account cust01 = new Account();
		  cust01.aid = 1122;
		  cust01.balance = 20000;
		  cust01.interestRate = 4.5F;
		  cust01.dateCreated = "2013-11-06 13:15:45";
		  
		  System.out.println( cust01 );
		  System.out.println( cust01.aid);
		  System.out.println( cust01.balance);
		  System.out.println( cust01.interestRate);
		  System.out.println( cust01.dateCreated);
		  
		  
		  //#4
		  Stock iedu = new Stock();
		  iedu.sname = "경영기술";
		  iedu.previousClosingPrice = 1_000_000;
		  iedu.currentPrice = 750_000;
		  
		  
		  System.out.println( iedu.sname);
		  System.out.println( iedu.previousClosingPrice);
		  System.out.println( iedu.currentPrice);
		  
	  
	  
	} //main

}  //class

  // #1

class Retangle {
	float width = 1.0F;
	float height = 1.0F;
	String color = "white";
	float getArea() {
		return (width * height);
		// System.out.println(width * height);
	}	
	float getArea() {
		return (width * 2) + (height * 2);
		// System.out.println((width * 2) + (height * 2));
	}
}

class Fan {
	final int SLOW = 1;
	final int MEDIUM = 2;
	final int FAST = 3;

	int speed = SLOW;
	boolean on = false;
	float radius = 5.0f;
	String color = "blue";
	
	String showFanInfo() {
		String msg = "";
		if (on == true)
			msg = speed + "," + color + "," + radius + "," + "작동중";
			// System.out.println(speed + "," + color + "," + radius + "," + "작동중");
		else
			msg = color + "," + radius + "," + "꺼져있음";
			// System.out.println(color + "," + radius + "," + "꺼져있음");
		return msg;
	}

}

class Account {
	int aid = 0;
	int balance = 0;
	float interestRate = 0;
	String dateCreated;
	float getMonthlyInterestRate() {
		return interestRate / 12;
		// System.out.println(interestRate / 12);
	}
			
    //	int withDraw(int gold) {
	//	System.out.println(balance - gold);
	//	return balance - gold;
	//  }
	// call by value 로 인해  예금 금액이 제대로 차감되지 않음
	
	int withDraw(int gold) {
	return balance -= gold;
  }
	
	int deposit(int gold) {
		return balance + gold;
	}

}

class Stock {
	String sname;
	int previousClosingPrice;
	int currentPrice;
	float getChangePercent() {
	return (1 - ((float) currentPrice / previousClosingPrice)) * 100;
	}
}




